package com.carrental.rental.service;

import com.carrental.common.api.PageResult;
import com.carrental.rental.dto.OverdueFeeNoticeDTO;
import com.carrental.rental.dto.RentalRenewDTO;
import com.carrental.rental.dto.RentalStatusQueryDTO;
import com.carrental.rental.dto.RentalStatusReminderDTO;
import com.carrental.rental.vo.RentalStatusVO;


import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
 * 租赁状态服务接口
 */
public interface RentalStatusService {

    /**
     * 分页查询租赁状态
     * @param queryDTO 查询参数
     * @return 分页结果
     */
    PageResult<RentalStatusVO> getRentalStatusPage(RentalStatusQueryDTO queryDTO);

    /**
     * 获取统计数据
     * @return 统计数据
     */
    Map<String, Object> getRentalStats();

    /**
     * 发送提醒
     * @param reminderDTO 提醒参数
     */
    void sendReminder(RentalStatusReminderDTO reminderDTO);

    /**
     * 续租
     * @param renewDTO 续租参数
     */
    void renewRental(RentalRenewDTO renewDTO);

    /**
     * 发送超期费用通知
     * @param noticeDTO 通知参数
     */
    void sendOverdueFeeNotice(OverdueFeeNoticeDTO noticeDTO);

    /**
     * 导出租赁状态数据
     * @param queryDTO 查询参数
     * @param response HTTP响应
     */
    void exportRentalStatus(RentalStatusQueryDTO queryDTO, HttpServletResponse response);

    /**
     * 生成租赁状态报表
     * @param response HTTP响应
     */
    void generateRentalStatusReport(HttpServletResponse response);
} 